package com.zzl.mine.util;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.Session;

import com.zzl.mine.pojo.system.User;

/**
 * @description 获取当前登录用户信息
 * @author rambo
 * @date 2018年7月6日 上午10:56:46
 */
public class UserUtil {

	/**
	 * @description 获取HttpSession
	 * @param request 请求对象
	 * @return 返回HttpSession
	 */
	public static HttpSession getHttpSession(HttpServletRequest request) {
		return request.getSession();
	}

	/**
	 * @description 获取当前用户信息
	 * @param request 请求对象
	 * @return 返回当前用户信息
	 */
	public static User getCurrentUser(HttpServletRequest request) {
		return (User) getHttpSession(request).getAttribute(Const.SESSION_USER);
	}

	//==========================================================================//
	
	/**
	 * @description 获取shiro管理的Session
	 * @return 返回shiro管理的Session
	 */
	public static Session getSession() {
		return SecurityUtils.getSubject().getSession();
	}

	/**
	 * @description 获取当前用户信息
	 * @return 返回当前用户信息
	 */
	private static User getCurrentUser() {
		return (User) getSession().getAttribute(Const.SESSION_USER);
	}
	
	//==========================================================================//

	/**
	 * @description 获取当前用户的系统用户名（登录使用）
	 * @return 返回当前用户的系统用户名（登录使用）
	 */
	public static String getUserName() {
		return (String) getSession().getAttribute(Const.SESSION_USERNAME);
	}

	/**
	 * @description 获取当前用户的真实姓名
	 * @return 返回当前用户的真实姓名
	 */
	public static String getName() {
		return getCurrentUser().getNAME();
	}
	
	/**
	 * @description 获取当前用户的ID
	 * @return 返回当前用户的ID
	 */
	public static Integer getUserId() {
		return getCurrentUser().getUSER_ID();
	}

}
